home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok59.lha
/
QSort
/
QSortTest.mod
< prev
next >
Wrap
Text File
|
1993-08-15
|
2KB
|
94 lines
(*------------------------------------------------------------------)
:Program. QSortTest
:Contents. Programm zum testen vom QSort-Algorithmus.
:Author. Philippe Gressly (PHILU), hartmut Goebel [hG]
:Address. Näfenhaus, CH-8926 Kappel a/Albis
:History V0.99 (2.8.91)
:History V0.99o 27 Sep 1991 [hG] ported to Oberon an adapted
:Copyright. PD
:Language. Oberon
:Translator. Amiga Oberon 2.00
(------------------------------------------------------------------*)
MODULE QSortTest;
IMPORT
io,
qs: QSort;
CONST
MAX = 1000;
VAR
Arr: ARRAY MAX OF INTEGER;
end: INTEGER; (* letzte genutzte Zahl im Array.
* end muss kleiner als MAX sein.
*)
k : INTEGER; (* Laufvariable *)
ch : CHAR; (* Wird bei Read (warte auf Returntaste) gebraucht. *)
PROCEDURE grth*(i,j: INTEGER): INTEGER;
BEGIN
IF Arr[i] > Arr[j] THEN RETURN 1
(* ELSIF Arr[i] < Arr[j] THEN RETURN -1 wird nicht benötigt *)
ELSE RETURN 0
END;
END grth;
PROCEDURE swap*(i,j: INTEGER);
VAR
t: INTEGER;
BEGIN
t := Arr[i];
Arr[i] := Arr[j];
Arr[j] := t
END swap;
(****************************************)
(****** H A U P T P R O G R A M M ******)
(****************************************)
BEGIN (* QSortTest *)
io.WriteString("Anzahl zu sortierende Zahlen: ");
io.ReadIntegerOk(end);
IF (end >= 1) AND (end <= MAX) THEN
io.WriteString("Zahlen zwischen 0 und 32767 sind erlaubt\n");
k := 0;
REPEAT
io.WriteInt(k+1, 3);
io.WriteString(". Zahl: "); io.ReadIntegerOk(Arr[k]);
INC(k);
UNTIL k = end;
io.WriteString("Start...");
(* QUICKSORT AUFRUF *)
(*********************)
qs.QSort(0, end-1, grth, swap);
io.WriteString("\nQSort Fertig\n\n");
k := 0;
REPEAT
io.WriteInt(Arr[k], 6);
INC(k);
UNTIL k = end;
io.WriteLn;
ELSE
io.WriteString("Anzahl muß sein von 1 bis "); io.WriteInt(MAX, 3);
io.WriteLn;
END;
END QSortTest.